package it.tukano.fun;

/**
 * A function that takes three parameters and returns a value
 * @author pgi
 * @param <P1> the first value's type
 * @param <P2> the second value's type
 * @param <P3> the third value's type
 * @param <R> the result type
 */
public interface Function3<P1, P2, P3, R> {

    /**
     * Applies this function
     * @param p1 the first argument
     * @param p2 the second argument
     * @param p3 the third argument
     * @return the result of the function
     */
    R apply(P1 p1, P2 p2, P3 p3);
}